<?php
/**
 * 首页
 *
 */
class subject extends control {
	/**
	 * 添加项目
	 */
	public function add_action() {
		$name 	= getgpc('name', 'P');
		$dir 	= getgpc('dir', 'P');
		$module = getgpc('module', 'P');

		if(!$name || !$dir || !$module) {
			ajaxOutput(0, '项目参数不能为空');
		}

		//判断项目是不是存在
		$res = $this->model->isExist($name, $module);
		if($res === true) {
			ajaxOutput(0, '项目已经存在');
		}

		$res = $this->model->add($name, $dir, $module);
		if(!$res) {
			ajaxOutput(0, '项目添加失败');
		}

		//返回
		ajaxOutput(1, '项目添加成功');
	}

	/**
	 * 移除项目 
	 *
	 */
	public function remove_action() {
		$key 	= getgpc('key', 'P');

		if(!$key) {
			ajaxOutput(0, '参数不能为空');
		}

		//判断项目是不是存在
		$res = $this->model->remove($key);
		if($res === false) {
			ajaxOutput(0, '项目添加失败');
		} else {
			//返回
			ajaxOutput(1, '项目添加成功');
		}
	}

	/**
	 * 同步代码 
	 *
	 */
	public function rsyncCode_action() {
		global $_G;

		$codes    = strval(getgpc('codes', 'P'));
		$key      = strval(getgpc('key', 'P'));
		$simulate = intval(getgpc('simulate', 'P'));

		//数据验证
		if(!$codes || !in_array($simulate, array(0, 1)) || !$key) {
			ajaxOutput(0, '参数错误');
		}

		//通过key获取项目数据
		$subject = $this->model->getSubjectByKey($key);
		if(!$subject) {
			ajaxOutput(0, '参数错误');
		}
		$dir    = $subject['dir'];
		$module = $subject['module'];

		//将数据写入文件
		$this->load_model('subject');

		//执行同步命令
		$res = $this->model->runCmd($dir, $module, $codes, $simulate);

		if($res === -1) {
			ajaxOutput(0, '参数错误');
		} else if($res === -2) {
			ajaxOutput(0, '配置有问题');
		} else if($res === -3) {
			ajaxOutput(0, '数据写入文件失败');
		} else if($res === false){
			ajaxOutput(0, '数据同步失败，请查看项目的日志文件file_log.txt');
		} else {
			ajaxOutput(1, '', $res);
		}
	}	
}